SFTP 客户端 PRO

需要 Scripting PRO

SFTPClient 用于通过 SSH 连接访问远程文件系统,基于 SFTP 协议。 它提供目录操作、文件操作、路径解析等能力,并可通过 openFile() 获得更强大的 SFTPFile 对象执行读取、写入等低层操作。

该类实例通常由:

1const sftp = await ssh.openSFTP()

返回。


属性

readonly isActive: boolean

指示当前 SFTP 连接是否仍然有效。

  • true:连接仍然处于活跃状态
  • false:连接已关闭或发生错误

方法


close(): Promise<void>

关闭当前 SFTP 连接。

返回值:

  • Promise<void>:关闭成功后 resolve

示例:

1await sftp.close()

readDirectory(atPath: string): Promise<DirectoryEntry[]>

读取指定目录下的文件与子目录。

参数:

  • atPath:远程目录路径

返回值:

DirectoryEntry[] 数组,结构如下:

1{
2  filename: string
3  longname: string
4  attributes: {
5    size?: number
6    userId?: number
7    groupId?: number
8    accessTime?: Date
9    modificationTime?: Date
10    permissions?: number
11  }
12}[]

示例:

1const items = await sftp.readDirectory("/var/log")

createDirectory(atPath: string): Promise<void>

在指定路径创建一个目录。

参数:

  • atPath:目标目录路径

返回值:

  • Promise<void>:创建成功后 resolve

示例:

1await sftp.createDirectory("/home/user/new-folder")

removeDirectory(atPath: string): Promise<void>

删除一个目录(需为空目录)。

参数:

  • atPath:要删除的目录路径

返回值:

  • Promise<void>

示例:

1await sftp.removeDirectory("/home/user/empty-dir")

rename(oldPath: string, newPath: string): Promise<void>

重命名或移动文件 / 目录。

参数:

  • oldPath:原路径
  • newPath:目标路径

返回值:

  • Promise<void>

示例:

1await sftp.rename("/home/user/a.txt", "/home/user/b.txt")

getAttributes(atPath: string): Promise<FileAttributes>

读取文件或目录的信息。

返回值:

1{
2  size?: number
3  userId?: number
4  groupId?: number
5  accessTime?: Date
6  modificationTime?: Date
7  permissions?: number
8}

示例:

1const attrs = await sftp.getAttributes("/etc/hosts")

openFile(filePath: string, flags: SFTPOpenFileFlags | SFTPOpenFileFlags[]): Promise<SFTPFile>

以指定模式打开远程文件,返回 SFTPFile 对象进行读写。

参数:

  • filePath:文件路径
  • flags:打开文件的模式,可为单个 flag 或数组

可用的 flag:

"read" | "write" | "append" | "create" | "truncate" | "forceCreate"

返回值:

  • Promise<SFTPFile>:一个可读写、可关闭的文件对象

示例:

1const file = await sftp.openFile("/home/user/log.txt", ["read"])
2const data = await file.readAll()
3await file.close()

remove(atPath: string): Promise<void>

删除指定路径的文件。

参数:

  • atPath:要删除的文件路径

示例:

1await sftp.remove("/home/user/old.txt")

getRealPath(atPath: string): Promise<string>

解析符号链接、相对路径、~ 等,返回绝对路径。

示例:

1const real = await sftp.getRealPath("~/documents")

使用示例

1const ssh = await SSHClient.connect({
2  host: "192.168.1.10",
3  authenticationMethod: SSHAuthenticationMethod.passwordBased("user", "pass")
4})
5
6const sftp = await ssh.openSFTP()
7
8// 查看目录内容
9const list = await sftp.readDirectory("/home/user")
10
11// 打开文件读取
12const file = await sftp.openFile("/home/user/info.txt", "read")
13const data = await file.readAll()
14await file.close()
15
16// 创建目录
17await sftp.createDirectory("/home/user/new-folder")
18
19// 删除文件
20await sftp.remove("/home/user/temp.txt")
21
22await sftp.close()